package com.wzh.common.general.result;

import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author 山归岿
 * @create 2025-06-15-19:36
 */
@Setter
@Getter
@Data
@Accessors(chain = true)
@Builder
public class PageResult<T> {

    // 当前页码
    private int pageNum;
    // 每页数量
    private int pageSize;
    // 总记录数
    private int total;
    // 当前页数据
    private List<T> list;

    public PageResult() {
    }

    public PageResult(int pageNum, int pageSize, int total, List<T> list) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
        this.list = list;
    }

    /**
     * 构建分页结果
     *
     * @param pageNum  当前页码
     * @param pageSize 每页数量
     * @param total    总记录数
     * @param list     当前页数据
     * @param <T>      数据类型
     * @return 分页结果对象
     */
    public static <T> PageResult<T> of(int pageNum, int pageSize, int total, List<T> list) {
        return new PageResult<>(pageNum, pageSize, total, list);
    }

    // Getter and Setter

}